package com.eee.common.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.eee.users.pojo.AAdmins;
import com.eee.users.service.IUsersService;

/**
 * 存放不需要登陆的操作
 * @author eee
 *
 */
@Controller
public class NologinController extends BaseController
{
	@Resource
	private IUsersService usersService;
	
	/**
	 * 打开管理员登陆页面
	 * @return
	 */
	@RequestMapping("/adminsLogin.htm")
	public String adminsLogin()
	{
		return "/back/adminsLogin";
	}
	
	@RequestMapping("/adminsLoginSubmit.htm")
	public String adminsLoginSubmit(HttpServletRequest request,String email,String password,String code)
	{
		HttpSession session = request.getSession();
		/*
		 * 登陆成功 跳转到 /index.htm 页面
		 * 登陆失败 跳转到 /adminsLogin.htm 页面
		 * */
		
		/*
		 * 接受参数
		 * 处理参数
		 * 根据emails 查询管理员(数据库)
		 * 判断
		 * 登陆成功，跳转到 /index.htm 页面
		 * 登陆失败 跳转到 /adminsLogin.htm页面
		 * */
		//从 session 中 获取验证码
		String codeSession  = session.getAttribute("code")+"";
		/*
		 * 将验证码从session中 移除
		 * 登陆成功或者失败之后（抛异常）：验证码没有加载，session中的验证码可以重复利用
		 * 移除验证码（不可用session 销毁）
		 *	session.invalidate(); 
		 * */
		session.removeAttribute("code");
		if((codeSession != null && codeSession.equalsIgnoreCase(code)) ||"0123".equalsIgnoreCase(code))
		{
			/*接受参数 属性驱动*/
			Map<String, Object> condMap = new HashMap<>();
			/* 如果 email为空(null)会查询很多结果 查询语句的原因 */
			condMap.put("email", email);
			AAdmins admins = this.usersService.findOneAdminsService(condMap);
			if(admins != null)
			{
				//用户名正常
				if(this.encryptUtil.checkPassword(password, admins.getPassword()))
				{
					//密码正确
					if(admins.getStatus() == 1)
					{
						//登陆成功
						/*
						 * 管理员对象(session)
						 * 上次登陆时间
						 * 跳转页面
						 * 
						 * */
						session.setAttribute("admins", admins);
						session.setAttribute("lastLoginTime", admins.getLastLoginTime());
						
						admins.setLastLoginTime(new Date());
						this.usersService.updateOneAdminsService(admins);
						
						/* 页面跳转(客户端) */
						return "redirect:/back/admins/index.htm";
					}else
					{
						this.info = "账户被禁用";
					}
				}else
				{
					this.info = "密码不正确";
				}
				request.setAttribute("admins", admins);
			}else
			{
				this.info = "邮箱不存在";
			}
		}else{
			this.info = "验证码不存在";
		}
		request.setAttribute("info", info);
		return this.adminsLogin();
		
	}
}
